<?php
require_once 'setup.php';
require_once 'Zend/Feed/Reader.php';
class Parser
{
	public $id;
	public $cat;
		
	function ParseXml($strHtml)
	{
    	$arrConfig = array
    	(
        	"indent"           => True,
        	"output-xml"       => True,
        	"wrap"             => 2000,
        	"doctype"          => "omit",
        	"quote-ampersand"  => False,
        	"clean"            => True,
        	"drop-empty-paras" => True,
        	"quote-nbsp"       => False
    	);
    	$oTidy = new tidy;
    	$oTidy->parseString($strHtml, $arrConfig, "utf8");
    	$oTidy->cleanRepair();
    	$oXml = simplexml_load_string($oTidy);
    	return $oXml;
	}
	function rss_read($url,$cat)
	{
		// читаем rss ленту и записываем в базу урл, титл
		global $db;
		$feed = Zend_Feed_Reader::import($url); 
		foreach ($feed as $entry) {
    		$post = $db->fetchOne ("SELECT COUNT(*) FROM `post` WHERE url = ?",$entry->getLink());
    		if ($post == 0){
    			$save = array(
		        	'url'   =>$entry->getLink(),
            		'title' =>$entry->getTitle(),
            		'category' => $cat,
            		'status' => '0');
    			$insert = $db->insert('post',$save);
    		}
		}
	}
	
	function parse_imaga($id,$cat,$url,$input)
	{
		$this->id	= $id;
		$this->cat 	= $cat;
		// получаем страницу поста и выбираем ссылки на картинки, посылаем ссылки в соответсвующие функции для обработки
		$in = file_get_contents($url);
		$oXml = $this->ParseXml($in);
		$post = $oXml->xpath("//a[@href]");
		$i = 1;
		foreach ($post as $posts)
		{
		    if(strpos($posts['href'],"http://imagearn.com/") and strpos($posts['href'],'image.php?id')){
    			if($input == $i){
        			$good = explode("http://imagearn",$posts['href']);
        			$img =  "http://imagearn".$good[1];
        			$this->imagarn($img); 
    			}
    		$i++;
    		}elseif(strpos($posts['href'],"http://imagebam.com") and strpos($posts['href'],'/image/'))
    		{
       			if($input == $i){
        			$good = explode("http://imagebam",$posts['href']);
        			$img = "http://imagebam".$good[1];
        			$this->imagbarn($img); 
    			}
    		$i++; 
    		}elseif(strpos($posts['href'],"http://www.share-image.com") and strpos($posts['href'],'/gallery/'))
    		{
        		if($input == $i){
        			$good = explode("http://www.share-image",$posts['href']);
        			$img = "http://www.share-image".$good[1];
        			$this->shareimage($img); 
    			}
    		$i++;
    		}elseif(strpos($posts['href'],"http://pixmix.me") and strpos($posts['href'],'/gallery/'))
    		{
        		if($input == $i){
        			$good = explode("http://pixmix",$posts['href']);
        	        $img =  "http://pixmix".$good[1];
        	        $this->pixme($img); 
    			}
    		$i++;
    		}elseif(strpos($posts['href'],"http://www.imagewaste.com") and strpos($posts['href'],'/pictures/'))
    		{
        		if($input == $i){
        			$good = explode("http://www.imagewaste",$posts['href']);
        	        $img =  "http://www.imagewaste".$good[1];
        	        $this->imagewaste($img); 
    			}
    		$i++;
    		}
		}
	}
		
	function converts($img)
	{
		// получаем урл картинки и сохроняем ее
		global $db;
		$id = $this->id;
    	$confg = arrConfig();
    	$im = $db->fetchOne("SELECT imstring FROM `category` WHERE id = ?",$this->cat);
    	$path_im = $confg['path_im'];
    	$path_com = $confg['path_com'];
    	$path_com_thumd = $_SERVER['DOCUMENT_ROOT']."/thumb";
    	$path_imag = $_SERVER['DOCUMENT_ROOT']."/thumb/".date("Y")."/".date("m");
    	$dir = $_SERVER['DOCUMENT_ROOT']."/thumb/".date("Y");
    	$dir_image = "/thumb/".date("Y")."/".date("m");
    	if(!is_dir($dir)) mkdir($dir);
    	if(!is_dir($path_imag)) mkdir($path_imag);
    	exec ("$path_im $img  $im $path_imag/$id.jpg");
        echo "$path_im $img  $im $path_imag/$id.jpg<br>";
    	exec ("$path_com -gravity southwest $path_com_thumd/watermark.png $path_imag/$id.jpg $path_imag/$id.jpg");
    	$data = array('img'=>"$dir_image/$id.jpg",
    					'datePost' => date("Y-m-d  H:i:s"),
    					'status'	=> '1');
    	$update = $db->update('post',$data,"id = $id");
	}
	
	function imagarn($url)
	{
		// получаем урл страницы на хостинге imagearn и вырезаем адрес картинки
		$in = file_get_contents($url);
		$oXml = $this->ParseXml($in);
		$post = $oXml->xpath("//img[@src]");
		foreach ($post as $posts)
		{
			if(strpos($posts['src'],"/imags/")){
				$img =  $posts['src'];
				$this->converts($img);
    			}
		}
	}
	function imagbarn($url)
	{
		// получаем урл страницы на хостинге imageban и вырезаем адрес картинки
		$in = file_get_contents($url);
		$oXml = $this->ParseXml($in);
		$post = $oXml->xpath("//a[@href]");
		foreach ($post as $posts)
		{
			if(strpos($posts['href'],"/download/")){
				$img =  $posts['src'];
				$this->converts($img);
    			}
		}
	}
	function shareimage($url)
	{
		// получаем урл страницы на хостинге share-image и вырезаем адрес картинки
		$in = file_get_contents($url);
		$oXml = $this->ParseXml($in);
		$post = $oXml->xpath("//img[@src]");
		foreach ($post as $posts)
		{
			if(strpos($posts['src'],"/shareimagebig/")){
				$img =  $posts['src'];
				$this->converts($img);
    			}
		}
	}
	function pixme($url)
	{
		// получаем урл страницы на хостинге pixme и вырезаем адрес картинки
		$in = file_get_contents($url);
		$oXml = $this->ParseXml($in);
		$post = $oXml->xpath("//img[@src]");
		foreach ($post as $posts)
		{
			if(strpos($posts['src'],"/out.php/")){
				$img =  $posts['src'];
				$this->converts($img);
    			}
		}
	}
    function imagewaste($url)
	{
		// получаем урл страницы на хостинге imagearn и вырезаем адрес картинки
		$in = file_get_contents($url);
		$oXml = $this->ParseXml($in);
		$post = $oXml->xpath("//img[@src]");
		foreach ($post as $posts)
		{
			if(strpos($posts['src'],"/big/")){
				$img =  $posts['src'];
				$this->converts($img);
    			}
		}
	}
}
// cron
/*
 * 1. читаем с базы строчку с рсс
 * 2. создаем объект парсер
 */
$parser = new Parser;
$cron = $db->fetchAll("SELECT * FROM category WHERE status =1");
foreach ($cron as $item)
{
	$parser->rss_read($item['url'], $item['id']);
}
$post = $db->fetchAll("SELECT p.id, p.url, p.category, c.imagenumber FROM `post`p Left join category c ON c.id=p.category WHERE p.status = 0");
foreach ($post as $item)
{
	$parser->parse_imaga($item['id'], $item['category'], $item['url'], $item['imagenumber']);
}
